iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

邁向 JavaScript 核心之路 系列 第 4

[Day 4] JavaScript 語法介紹 - function arguments

  • 分享至 

  • xImage
  •  

在開始介紹 Arguments 之前,想先跟各位介紹一級函式 ( First-class function ),而什麼是一級函式呢?

一級函式是指你對其他型別,例如 string、number、boolear 做的事情,同樣也可以對 function 做。
包括將 funtion 指定成一個變數、當作參數傳給另一個 function、或向物件一樣設定屬性或者方法。

下面會用程式碼來驗證


    // 將函式指定成一個變數
    
    const foo = function() {
        console.log("foobar");
    }
    
    foo();
    

    // 將函式當作參數傳遞
    
    function sayHi() {
       return "Hi, ";
    }
    
    function greeting(message, name) {
      console.log(message() + name);
    }
    
    greeting(sayHi, "there!");
    

    // 函式設定屬性
    
    let foo = function() {
        console.log("foobar");
    }
    
    foo.mean = "Not Thing";
    
    console.log(foo.mean); // Not Thing
    

在介紹完一級函式後,讓我們來介紹到今天的正題 argument

每個函式都有 this 與 argument,相信大多數人都有看過 this 和用過它,但是 argument 可能剛入門的朋友就比較不知道,arguments 是一個類陣列的物件( Array-Like Objects ),它可以存取所有傳送到函式的參數,也具備用引數的方式來存取值與具有 length 的屬性,但並不具備陣列的方法,例如 filter、map、forEach 等等

以下同樣讓我們用程式碼來驗證


    // 取得參數
    
    function getArguments() {
        console.log( "長度 :" + arguments.length, "參數一 :" + arguments[0], "參數二 :" + arguments[1] );
        console.log(arguments);
    }
    
    getArguments(100, 200);
    

那如果要讓 arguments 能使用陣列的方法應該怎麼做呢?

    function toAry() {
        var args = new Array(); // 先將變數 args 指定成一個陣列
        
        for( let i = 0; i < arguments.length; i++ ) { // 將參數加到陣列當中
            args.push(arguments[i]);
        }
        
        args.forEach( item => console.log(item) ); // 驗證,結果是 1,2,3,4
    }
    
    toAry(1,2,3,4)

真是高估了自己的意志力 囧,才第三天就有一點倦怠 XDDDD

參考資料: Tommy - 深入 JavaScript 核心課程


上一篇
[Day 3] JavaScript 語法介紹 - 型別 ( 2 ) 與 布林值
下一篇
[Day 5] JavaScript 語法介紹 - 立即函式 ( IIFE )
系列文
邁向 JavaScript 核心之路 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言